package com.itheima.reggie.common;

import lombok.Data;

import java.io.Serializable;

//通用类，将要通过response返回的数据，封装成此类，以此传递给前端。
//json返回格式的通用类，必须写get，set方法，不然返回的json格式是一个对象的地址而不是对象的内容。
@Data  //实现序列化 是因为springCache 返回的对象需要是序列化的。
public class R<T> implements Serializable {
    private T data;     // 要返回给前端的数据
    private Integer code;    //发送成功与否的标志
    private String msg;    //错误的信息

    /**
     * 响应成功
     * @param <T>
     * @return
     */
    public static <T> R<T> success(T object){
        R<T> result = new R<>();
        result.data=object;
        result.code=1;
        return result;
    }

    /**
     * 响应失败
     * 因为只传入的是String字符串对象，所以构建通用类对象时，不需要再用泛型了。且code和msg都有自己固定的类型
     * 为什么返回值还要写R<T>因为在写代码时可以标记这是一个String类型。
     * @param <T>
     * @return
     */
    public static <T> R<T> error(String msg){
        R result = new R();
        result.code=0;
        result.msg=msg;
        return result;
    }
}
